The Unified Modeling Language (UML) is a modeling and specification language used in software engineering. UML is often used for modeling object-oriented programs. UML includes a standardized modeling notation that may be used to create an abstract representation—a UML model of a system. While UML was designed to specify, visualize, construct, and document software-intensive systems, UML is not restricted to modeling software and can be used for modeling systems in general. For example, UML can also be used for business process modeling, organizational structure modeling, language modeling, engineered system modeling and physical system modeling.